// #include <bits/stdc++.h>
// using namespace std;

// using uint = unsigned int;
// using ll = long long;
// using ull = unsigned long long;
// using i128 = __int128;

// const int N = 1e6 + 5;

// int main() {
//     std::ios::sync_with_stdio(false);
//     std::cin.tie(nullptr);
//     std::cout.tie(nullptr);
//     int a, b;
//     std::cin >> a >> b;
//     int result = 1;
//     for (int i = 0; i < b; i++) {
//         result = (result * a) % 1000;
//     }
//     printf("%03d\n", result);
//     return 0;
// }
#include <bits/stdc++.h>

using uint=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128;

const int N=1e6+5;

void Solve(){
    
    return;
}

int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr); std::cout.tie(nullptr);
    int a,b;
    std::cin>>a>>b;
    std::vector<int> res;
    res.push_back(1);
    for(int i=0;i<b;i++){
        int carry=0;
        for(int j=0;j<res.size();j++){
            int temp=res[j]*a+carry;
            res[j]=temp%10;
            carry=temp/10;
        }
        if(carry>0)res.push_back(carry);
    }
    if(res.size()==1){
        std::cout<<"00"<<res[0]<<std::endl;
    }
    else if(res.size()==2){
        std::cout<<"0"<<res[1]<<res[0]<<std::endl;
    }
    else{
        std::cout<<res[2]<<res[1]<<res[0]<<std::endl;
    }

    return 0;
}
// 题目：幂的末尾

// 描述：
// 幂a的b次方的末3位数是多少？
// 输入格式
// 两个正整数a和b。 0<a<100，0<b<10000。
// 输出格式
// 从高位到低位输出幂的末三位数字，中间无分隔符。若幂本身不足三位，在前面补零。
// 样例输入
// 2 3
// 样例输出
// 008